On modern 3D-enabled desktop environments, frames are often processed or rendered in a graphics processing unit (GPU) having dedicated video random access memory (VRAM). Processing desktop graphics with a GPU and VRAM facilitates offloading computational processes associated with desktop graphics processing from a computer system's central processing unit (CPU) and primary memory. Further, GPUs are commonly architected and tuned specifically for graphics processing, allowing them to render graphics more efficiently than the CPU.
GPUs traditionally display graphics to a display directly attached to the computer system. However, many systems use a server-based computing model, such as, for example, a virtual desktop infrastructure (VDI), which provides complete centrally-managed desktops to users using computer virtualization technology. In a typical VDI architecture, user displays and input devices are local, but applications execute remotely in a server. As such, a virtual desktop may be accessible by one or more remote users through a network. The virtual desktop may mimic a desktop computer interface or an interface of another computer or system by providing a virtual screen or virtual display to an end user. For example, in a VDI, the computer system supports multiple virtual machines (VMs) having virtual displays rather than displays physically attached to the computer system. In some known VDIs, the VMs may involve the GPU for rendering each successive frame of desktop graphics. Each frame is rendered by the GPU and transferred, in its entirety, from the GPU to the CPU across a peripheral control interconnect express (PCI-e) bus within the computer system. Such an approach consumes bandwidth on the bus. The CPU then compresses the desktop graphics frames before transferring the compressed frames to the remote client, wherein the desktop graphics will be uncompressed and displayed to a user.
In one version of the PCI-e standard, a 16 lane PCI-e bus yields a maximum throughput of approximately 8,192 megabytes (MBs) per second. A desktop at 1900 pixels×1600 pixels refreshing at 30 frames per second (FPS) consumes approximately 348 MB per second. With these settings, a VDI having a single GPU is therefore limited by the PCI-e bus to hosting just 23 VMs. This hardware limitation thus presents a ceiling on the number of VMs that a VDI may support while harnessing the graphics processing benefits of a GPU.